package com.example.CarManagement.sys.service;

import com.example.CarManagement.sys.dto.WxUserLogin;
import com.example.CarManagement.sys.entity.LoginUser;
import com.example.CarManagement.sys.entity.User;
import com.baomidou.mybatisplus.extension.service.IService;
import com.example.CarManagement.common.Result;

import java.util.Map;

/**
 * <p>
 * 用户表 服务类
 * </p>
 *
 * @author 徐佳彪
 * @since 2025-07-08
 */
public interface IUserService extends IService<User> {

    /**
     * 用户登录方法
     *
     * @param user 用户对象，包含登录所需的用户名和密码等信息
     * @return 登录结果，包括是否成功和相关提示信息
     */
    Result<?> login(User user);


    /**
     * 获取用户信息方法
     *
     * @param token 用户令牌，用于验证用户身份
     * @return 用户信息对象，包含用户详细信息
     */
    LoginUser getUserInfo(String token);

    /**
     * 用户注销方法
     *
     * @param token 用户令牌，用于标识要注销的用户会话
     * @return 注销结果，包括是否成功和相关提示信息
     */
    Result<?> logout(String token);

    /**
     * 获取用户列表方法
     *
     * @param user 包含查询条件的映射，如用户名、角色等
     * @return 用户列表查询结果，包括用户列表和相关提示信息
     */
    Result<?> getUserList(Map<String, Object> user, String token);

    /**
     * 更新用户信息方法
     *
     * @param user 待更新的用户对象，包含需要修改的用户信息
     * @return 更新结果，包括是否成功和相关提示信息
     */
    Result<?> updateUser(User user);


    /**
     * 注册用户方法
     *
     * @param user
     * @return
     */
    Result<?> register(User user);


    /**
     * 修改用户密码方法
     *
     * @param user
     * @return
     */
    Result<?> updatePassword(User user, String token);


    Result<?> getUserOperations();

    /**
     * 微信登录方法
     *
     * @param user
     * @return
     */
    Result<?> wxLogin(WxUserLogin user);

    /**
     * 修改自己密码
     * @param user
     * @param token
     * @return
     */
    Result<?> updateSelfPassword(User user, String token);

    Result<?> updateAv(User user);
}
